package cn.cttic.system.mapper;

import cn.cttic.system.api.model.DictModel;
import cn.cttic.system.api.model.TreeSelectModel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import cn.cttic.common.mybatis.core.mapper.BaseMapperPlus;
import cn.cttic.system.domain.SysDictData;
import cn.cttic.system.domain.vo.SysDictDataVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 字典表 数据层
 *
 * @author Times.Studio
 */
public interface SysDictDataMapper extends BaseMapperPlus<SysDictData, SysDictDataVo> {

    default List<SysDictDataVo> selectDictDataByType(String dictType) {
        return selectVoList(
            new LambdaQueryWrapper<SysDictData>()
                .eq(SysDictData::getDictType, dictType)
                .orderByAsc(SysDictData::getDictSort));
    }

    /**
     * 查询 字典表数据 支持查询条件 分页
     * @param page
     * @param table
     * @param text
     * @param code
     * @param filterSql
     * @return
     */
    @Deprecated
    IPage<DictModel> queryPageTableDictWithFilter(Page<DictModel> page, @Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("filterSql") String filterSql);

    /**
     * 查询 字典表数据 支持查询条件 查询所有
     * @param table
     * @param text
     * @param code
     * @param filterSql
     * @return
     */
    @Deprecated
    List<DictModel> queryTableDictWithFilter(@Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("filterSql") String filterSql);

    /**
     * 通过字典code获取字典数据
     * @param code 字典code
     * @return  List<DictModel>
     */
    public List<DictModel> queryDictItemsByCode(@Param("code") String code);



    /**
     * 根据表名、显示字段名、存储字段名 查询树
     * @param table
     * @param text
     * @param code
     * @param pid
     * @param hasChildField
     * @param query
     * @param pidField
     * @return
     */
    @Deprecated
    List<TreeSelectModel> queryTreeList(@Param("query") Map<String, String> query, @Param("table") String table, @Param("text") String text, @Param("code") String code,
                                        @Param("pidField") String pidField, @Param("pid") String pid, @Param("hasChildField") String hasChildField,
                                        @Param("converIsLeafVal") int converIsLeafVal);



    /**
     * 查询字典表的数据
     * @param table 表名
     * @param text   显示字段名
     * @param code   存储字段名
     * @param filterSql 条件sql
     * @param codeValues 存储字段值 作为查询条件in
     * @return
     */
    @Deprecated
    List<DictModel> queryTableDictByKeysAndFilterSql(@Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("filterSql") String filterSql,
                                                     @Param("codeValues") List<String> codeValues);
}
